import axios from 'axios';
// 在axios 的基础上创建了一个新的axios 实例：instance
const instance=axios.create({
    baseURL:'http://localhost:3000',
    timeout:5000
});
//2.配置axios 请求拦截器
instance.interceptors.request.use((config)=>{
    //拦截成功
    //2.1获取 token
    const token =localStorage.token;
   
    //2.2将token添加到请求头的Authorization 属性中
    config.headers.Authorization='Bearer '+token;
    return config
},(err)=>{
   return err;
})
//3.配置axios 响应拦截器
instance.interceptors.response.use((res)=>{
          return res;
},(err)=>{
        //响应失败
        //判断错误类型，并将错误的描述添加到err.message属性上
        if(err && err.response){
           switch(err.response.status){
            case 400: err.message = '请求错误(400)'; break;
            case 401: err.message = '身份认证失败(401)'; break;
            case 403: err.message = '拒绝访问(403)'; break;
            case 404: err.message = '请求出错(404)'; break;
            case 408: err.message = '请求超时(408)'; break;
            case 500: err.message = '服务器错误(500)'; break;
            case 501: err.message = '服务未实现(501)'; break;
            case 502: err.message = '网络错误(502)'; break;
            case 503: err.message = '服务不可用(503)'; break;
            case 504: err.message = '网络超时(504)'; break;
            case 505: err.message = 'HTTP版本不受支持(505)'; break;
            default: err.message = `连接出错(${err.response.status})!`;
           }
        }else{
          err.message='服务器连接失败'
        }
     return {
       data:{
         status:0,
         type:err.response.status,
         message:err.message
       }
     }

})
//将创建和配置完成的新的axios 实例暴露出去
export default instance;